package com.jay.model;

import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.io.Serializable;

/**
 * RPC 响应
 * 该类用于封装远程过程调用（RPC）的响应结果，实现了序列化接口以支持网络传输
 * 通过不同的属性来携带响应数据、响应信息以及可能的异常信息
 */
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class RpcResponse implements Serializable {

    /**
     * 响应数据
     * 用于携带RPC调用返回的实际数据，类型为Object，可以根据需要转换为具体类型
     */
    private Object data;

    /**
     * 响应数据类型（预留）
     * 预留字段，用于指示响应数据的实际类型，目前未使用
     */
    private Class<?> dataType;

    /**
     * 响应信息
     * 用于携带关于RPC响应的额外信息，通常用于描述成功或失败的原因
     */
    private String message;

    /**
     * 异常信息
     * 如果RPC调用过程中发生异常，该字段用于携带相关的异常信息
     */
    private Exception exception;

}
